main() {

  // 实例化父类
  Person p1 = Person(name: '张三');
  p1.say();
  // 实例化子类
  Student s1 = Student(id: 1, name: '666qe');
  s1.sayId();
  // 实例化老师类
  Teacher t1 = Teacher(subject: '鸿蒙', name: '李四');
  t1.saySubject();
}

//定义一个父亲
class Person {
  String name ;
  int? age ;
  // 定义构造函数
  Person({required this.name, this.age = 18});

  //定义方法
  void say() {
    print('我是$name,我今年$age岁');
  }
}

//定义子类-学生类
class Student extends Person {
  int id;
  // 定义构造函数
  //简写情况
  Student({required this.id,required super.name,super.age});
  // 不简写情况
  // Student(this.id, String name, int age) : super(name, age);


  //定义方法
  void sayId() {
    super.age = 20;
    // 调用父类方法
    super.say();
    print('我是$name,我今年$age岁,我是学生,我的学号是$id');
  }
}

// 定义子类 - 老师类
class Teacher extends Person {
  // 定义学科属性
  String subject;
  // 定义构造函数
  Teacher({required this.subject,required super.name,super.age});

  // 定义方法
  void saySubject() {
    // 调用父类方法
    super.say();
    print('我是老师，我教的学科是$subject');
  }
}
